﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.ComponentModel;

namespace MikroMagazaObject
{
    public enum EvrakTipleri : byte
    {
        SatisFaturasi = 0,
        AlisFaturasi = 1,
        AlisIrsaliyesi = 2,
        DepoSevk = 3,
        VerilenSiparis = 4,
        PerakendeSatisIrsaliyesi = 5,
        PerakendeSatisIadeIrsaliyesi = 6
    }

    public class Hareket
    {
        private decimal _Iskonto1 = 0;
        private decimal _Iskonto2 = 0;
        private decimal _Iskonto3 = 0;
        private decimal _Iskonto4 = 0;
        private decimal _Iskonto5 = 0;
        private decimal _Iskonto6 = 0;
        private decimal _Miktar = 0;
        private decimal _BirimFiyati = 0;

        [Browsable(false)]
        public decimal Iskonto1Tutari
        {
            get
            {
                return Tutari * Iskonto1 / 100m;
            }
        }

        [Browsable(false)]
        public decimal Iskonto2Tutari
        {
            get
            {
                decimal isk1T = Tutari * Iskonto1 / 100m;
                decimal isk2T = (Tutari - isk1T) * Iskonto2 / 100m;
                return isk2T;
            }
        }

        [Browsable(false)]
        public decimal Iskonto3Tutari
        {
            get
            {
                decimal isk1T = Tutari * Iskonto1 / 100m;
                decimal isk2T = (Tutari - isk1T) * Iskonto2 / 100m;
                decimal isk3T = (Tutari - isk1T - isk2T) * Iskonto3 / 100m;
                return isk3T;
            }
        }

        [Browsable(false)]
        public decimal Iskonto4Tutari
        {
            get
            {
                decimal isk1T = Tutari * Iskonto1 / 100m;
                decimal isk2T = (Tutari - isk1T) * Iskonto2 / 100m;
                decimal isk3T = (Tutari - isk1T - isk2T) * Iskonto3 / 100m;
                decimal isk4T = (Tutari - isk1T - isk2T - isk3T) * Iskonto4 / 100m;
                return isk4T;
            }
        }

        [Browsable(false)]
        public decimal Iskonto5Tutari
        {
            get
            {
                decimal isk1T = Tutari * Iskonto1 / 100m;
                decimal isk2T = (Tutari - isk1T) * Iskonto2 / 100m;
                decimal isk3T = (Tutari - isk1T - isk2T) * Iskonto3 / 100m;
                decimal isk4T = (Tutari - isk1T - isk2T - isk3T) * Iskonto4 / 100m;
                decimal isk5T = (Tutari - isk1T - isk2T - isk3T - isk4T) * Iskonto5 / 100m;
                return isk5T;
            }
        }

        [Browsable(false)]
        public decimal Iskonto6Tutari
        {
            get
            {
                decimal isk1T = Tutari * Iskonto1 / 100m;
                decimal isk2T = (Tutari - isk1T) * Iskonto2 / 100m;
                decimal isk3T = (Tutari - isk1T - isk2T) * Iskonto3 / 100m;
                decimal isk4T = (Tutari - isk1T - isk2T - isk3T) * Iskonto4 / 100m;
                decimal isk5T = (Tutari - isk1T - isk2T - isk3T - isk4T) * Iskonto5 / 100m;
                decimal isk6T = (Tutari - isk1T - isk2T - isk3T - isk4T - isk5T) * Iskonto6 / 100m;
                return isk6T;
            }
        }

        public string StokKodu { get; set; }
        public string StokAdi { get; set; }
        public decimal Miktar
        {
            get
            {
                return _Miktar;
            }
            set
            {
                _Miktar = value;
                Tutari = _Miktar * _BirimFiyati;
            }
        }
        public decimal BirimFiyati
        {
            get
            {
                return _BirimFiyati;
            }
            set
            {
                _BirimFiyati = value;
                Tutari = _Miktar * _BirimFiyati;
            }
        }

        public decimal Iskonto1
        {
            get
            {
                return _Iskonto1;
            }
            set
            {
                if (_Iskonto2 + value + _Iskonto3 + _Iskonto4 + _Iskonto5 + _Iskonto6 > 100)
                    _Iskonto1 = 0;
                else
                    _Iskonto1 = value;
            }
        }
        public decimal Iskonto2
        {
            get
            {
                return _Iskonto2;
            }
            set
            {
                if (_Iskonto1 + value + _Iskonto3 + _Iskonto4 + _Iskonto5 + _Iskonto6 > 100)
                    _Iskonto2 = 0;
                else
                    _Iskonto2 = value;
            }
        }
        public decimal Iskonto3
        {
            get
            {
                return _Iskonto3;
            }
            set
            {
                if (_Iskonto1 + value + _Iskonto2 + _Iskonto4 + _Iskonto5 + _Iskonto6 > 100)
                    _Iskonto3 = 0;
                else
                    _Iskonto3 = value;
            }
        }
        public decimal Iskonto4
        {
            get
            {
                return _Iskonto4;
            }
            set
            {
                if (_Iskonto1 + value + _Iskonto2 + _Iskonto3 + _Iskonto5 + _Iskonto6 > 100)
                    _Iskonto4 = 0;
                else
                    _Iskonto4 = value;
            }
        }
        public decimal Iskonto5
        {
            get
            {
                return _Iskonto5;
            }
            set
            {
                if (_Iskonto1 + value + _Iskonto2 + _Iskonto3 + _Iskonto4 + _Iskonto6 > 100)
                    _Iskonto5 = 0;
                else
                    _Iskonto5 = value;
            }
        }
        public decimal Iskonto6
        {
            get
            {
                return _Iskonto6;
            }
            set
            {
                if (_Iskonto1 + value + _Iskonto2 + _Iskonto3 + _Iskonto4 + _Iskonto5 > 100)
                    _Iskonto6 = 0;
                else
                    _Iskonto6 = value;
            }
        }
        public decimal Tutari { get; set; }

        [Browsable(false)]
        public decimal KdvOrani { get; set; }

        [Browsable(false)]
        public byte KdvSira { get; set; }

        [Browsable(false)]
        public decimal KdvTutari
        {
            get
            {
                return NetTutar * KdvOrani / 100;
            }
        }

        public decimal NetTutar
        {
            get
            {
                decimal isk1T = Tutari * Iskonto1 / 100m;
                decimal isk2T = (Tutari - isk1T) * Iskonto2 / 100m;
                decimal isk3T = (Tutari - isk1T - isk2T) * Iskonto3 / 100m;
                decimal isk4T = (Tutari - isk1T - isk2T - isk3T) * Iskonto4 / 100m;
                decimal isk5T = (Tutari - isk1T - isk2T - isk3T - isk4T) * Iskonto5 / 100m;
                decimal isk6T = (Tutari - isk1T - isk2T - isk3T - isk4T - isk5T) * Iskonto6 / 100m;
                return Tutari - isk1T - isk2T - isk3T - isk4T - isk5T - isk6T;
            }
        }

        [Browsable(false)]
        public int ID { get; set; }
    }
    public class ComboItem
    {
        public string Value { get; set; }
        public string Text { get; set; }
        public override string ToString()
        {
            return Text;
        }
    }

    public class Evrak
    {
        List<Hareket> _lines = new List<Hareket>();
        public DateTime Tarih { get; set; }
        public string CariKodu { get; set; }
        public string BelgeNo { get; set; }
        public int GirisDepo { get; set; }
        public int CikisDepo { get; set; }
        public string SrmMerkesi { get; set; }
        public List<Hareket> Lines { get { return _lines; } }
    }

    public class Mikro
    {

        public List<ComboItem> DepoListe()
        {
            List<ComboItem> _liste = new List<ComboItem>();
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT        dep_adi, dep_no FROM            DEPOLAR order by dep_adi", cn))
                {
                    SqlDataReader rd = cmd.ExecuteReader();
                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            _liste.Add(new ComboItem() { Text = rd[0].ToString(), Value = rd[1].ToString() });
                        }
                    }
                }
                cn.Close();
            }
            return _liste;
        }

        public List<ComboItem> SrmListe()
        {
            List<ComboItem> _liste = new List<ComboItem>();
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT        som_isim, som_kod FROM            SORUMLULUK_MERKEZLERI order by som_isim", cn))
                {
                    SqlDataReader rd = cmd.ExecuteReader();
                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            _liste.Add(new ComboItem() { Text = rd[0].ToString(), Value = rd[1].ToString() });
                        }
                    }
                }
                cn.Close();
            }
            return _liste;
        }

        public List<ComboItem> CariListe()
        {
            List<ComboItem> _liste = new List<ComboItem>();
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT        cari_unvan1 + ' ' + cari_unvan2 AS kod, cari_kod  FROM            CARI_HESAPLAR order by cari_unvan1", cn))
                {
                    SqlDataReader rd = cmd.ExecuteReader();
                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            _liste.Add(new ComboItem() { Text = rd[0].ToString(), Value = rd[1].ToString() });
                        }
                    }
                }
                cn.Close();
            }
            return _liste;
        }

        public DataTable StokListe(string filtre, bool kodunagore)
        {
            string cmdtxt = "";
            if (kodunagore)
            {
                cmdtxt = "SELECT        sto_kod AS [Stok Kodu], sto_isim AS [Stok Adı], dbo.fn_VergiYuzde(sto_toptan_vergi) AS KdvOrani, sto_toptan_vergi AS KdvSira FROM            STOKLAR WHERE        (sto_kod LIKE @filtre)";
            }
            else
            {
                cmdtxt = "SELECT        sto_kod AS [Stok Kodu], sto_isim AS [Stok Adı], dbo.fn_VergiYuzde(sto_toptan_vergi) AS KdvOrani, sto_toptan_vergi AS KdvSira FROM            STOKLAR WHERE        (sto_isim LIKE @filtre)";
            }

            DataTable dt = new DataTable();
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand(cmdtxt, cn))
                {
                    cmd.Parameters.Add("@filtre", SqlDbType.VarChar, 25).Value = filtre.Replace("*", "%") + "%";

                    using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                    {
                        adp.Fill(dt);
                    }
                }
                cn.Close();
            }
            return dt;
        }

        //private byte[] EvrakCins(EvrakTipleri cins)
        //{
        //    byte[] sonuc = new byte[4];
        //    switch (cins)
        //    {
        //        case EvrakTipleri.HizmetFaturasi:
        //            sonuc[0] = 0;
        //            sonuc[1] = 8;
        //            sonuc[2] = 0;
        //            sonuc[3] = 63;
        //            break;
        //        case EvrakTipleri.ToptanAlisIrsaliyesi:
        //            sonuc[0] = 0;
        //            sonuc[1] = 0;
        //            sonuc[2] = 0;
        //            sonuc[3] = 13;
        //            break;
        //        case EvrakTipleri.PerakendeAlisIrsaliyesi:
        //            sonuc[0] = 0;
        //            sonuc[1] = 1;
        //            sonuc[2] = 0;
        //            sonuc[3] = 13;
        //            break;
        //        case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
        //            sonuc[0] = 1;
        //            sonuc[1] = 0;
        //            sonuc[2] = 1;
        //            sonuc[3] = 1;
        //            break;
        //        case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
        //            sonuc[0] = 1;
        //            sonuc[1] = 1;
        //            sonuc[2] = 1;
        //            sonuc[3] = 1;
        //            break;
        //        case EvrakTipleri.ToptanSatisIrsaliyesi:
        //            sonuc[0] = 1;
        //            sonuc[1] = 0;
        //            sonuc[2] = 0;
        //            sonuc[3] = 1;
        //            break;
        //case EvrakTipleri.PerakendeSatisIrsaliyesi:
        //    sonuc[0] = 1;
        //    sonuc[1] = 1;
        //    sonuc[2] = 0;
        //    sonuc[3] = 1;
        //    break;
        //        case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
        //            sonuc[0] = 0;
        //            sonuc[1] = 0;
        //            sonuc[2] = 1;
        //            sonuc[3] = 13;
        //            break;
        //        case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
        //            sonuc[0] = 0;
        //            sonuc[1] = 1;
        //            sonuc[2] = 1;
        //            sonuc[3] = 13;
        //            break;
        //        case EvrakTipleri.AlinanSiparis:
        //            sonuc[0] = 0;
        //            sonuc[1] = 0;
        //            sonuc[2] = 0;
        //            sonuc[3] = 0;
        //            break;
        //        case EvrakTipleri.VerilenSiparis:
        //            sonuc[0] = 1;
        //            sonuc[1] = 0;
        //            sonuc[2] = 0;
        //            sonuc[3] = 0;
        //            break;
        //        case EvrakTipleri.GidenDepoSevk:
        //        case EvrakTipleri.GelenDepoSevk:
        //            sonuc[0] = 2;
        //            sonuc[1] = 6;
        //            sonuc[2] = 0;
        //            sonuc[3] = 2;
        //            break;
        //        default:
        //            break;
        //    }
        //    return sonuc;
        //}

        public byte[] SharEvrakTip(EvrakTipleri evrakTip)
        {
            byte[] sonuc = new byte[4];
            switch (evrakTip)
            {
                case EvrakTipleri.SatisFaturasi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 4;
                    break;
                case EvrakTipleri.AlisFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 3;
                    break;
                case EvrakTipleri.AlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.DepoSevk:
                    sonuc[0] = 2;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 2;
                    break;
                case EvrakTipleri.VerilenSiparis:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                default:
                    break;
            }
            return sonuc;
        }

        public byte[] CharEvrakTip(EvrakTipleri evrakTip)
        {
            byte[] sonuc = new byte[4];
            switch (evrakTip)
            {
                case EvrakTipleri.SatisFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 63;
                    break;
                case EvrakTipleri.AlisFaturasi:
                    sonuc[0] = 1;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
            }
            return sonuc;
        }

        public int MaxEvrakNo(EvrakTipleri tip, String seri, int baslangic)
        {
            byte[] dizi = SharEvrakTip(tip);
            int sira = 1;
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("", cn))
                {
                    switch (tip)
                    {
                        case EvrakTipleri.AlisFaturasi:
                            dizi = CharEvrakTip(tip);
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira >{4})'", seri, dizi[0], dizi[2], dizi[3], baslangic);
                            break;
                        case EvrakTipleri.VerilenSiparis:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER WITH (NOLOCK) WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'')  and (sip_evrakno_sira > {1})'", seri, baslangic);
                            break;
                        case EvrakTipleri.DepoSevk:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') and (sth_evrakno_sira > {1})'", seri, baslangic);
                            break;

                        case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                        case EvrakTipleri.PerakendeSatisIrsaliyesi:
                        case EvrakTipleri.AlisIrsaliyesi:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE  (sth_evraktip = {1}) AND (sth_evrakno_seri = ''{0}'') and (sth_evrakno_sira > {2})'", seri, dizi[3], baslangic);
                            break;
                    }
                    sira = Convert.ToInt32(cmd.ExecuteScalar());
                }
                cn.Close();
            }
            return sira;
        }

        public int MaxEvrakSatir(EvrakTipleri tip, String seri, int EvrakSira)
        {
            byte[] dizi = SharEvrakTip(tip);
            int sonuc = 1;
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("", cn))
                {
                    switch (tip)
                    {
                        case EvrakTipleri.AlisFaturasi:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_satir_no),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={4})'", seri, dizi[0], dizi[2], dizi[3], EvrakSira);
                            break;
                        case EvrakTipleri.VerilenSiparis:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_satirno),0) + 1 FROM         SIPARISLER WITH (NOLOCK) WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, EvrakSira);
                            break;
                        case EvrakTipleri.DepoSevk:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_satirno),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, EvrakSira);
                            break;

                        case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                        case EvrakTipleri.PerakendeSatisIrsaliyesi:
                        case EvrakTipleri.AlisIrsaliyesi:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_satirno),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE  (sth_evraktip = {1}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={2})'", seri, dizi[3], EvrakSira);
                            break;
                    }

                    sonuc = Convert.ToInt32(cmd.ExecuteScalar());
                }
                cn.Close();
            }
            return sonuc;
        }

        public DataTable ListEvrak(EvrakTipleri tip)
        {
            StringBuilder sb = new StringBuilder();
            DataTable dt = new DataTable();
            switch (tip)
            {
                case EvrakTipleri.AlisFaturasi:
                    byte[] dizi = CharEvrakTip(tip);
                    sb.Append("exec sp_executesql N'SELECT        ch.cha_belge_tarih AS Tarih, ch.cha_evrakno_seri AS Seri, ch.cha_evrakno_sira AS Sıra, CARI_HESAPLAR.cari_kod AS Kodu, CARI_HESAPLAR.cari_unvan1 AS Unvanı, ch.cha_belge_no AS BelgeNo  FROM            CARI_HESAP_HAREKETLERI AS ch INNER JOIN  CARI_HESAPLAR ON ch.cha_kod = CARI_HESAPLAR.cari_kod ");
                    sb.AppendFormat(" where (cha_tip = {0}) AND (cha_normal_Iade = {1}) AND (cha_evrak_tip = {2}) GROUP BY ch.cha_belge_tarih, ch.cha_evrakno_seri, ch.cha_evrakno_sira, CARI_HESAPLAR.cari_kod, CARI_HESAPLAR.cari_unvan1, ch.cha_belge_no'", dizi[0], dizi[2], dizi[3]);
                    break;
                case EvrakTipleri.DepoSevk:
                    sb.Append("exec sp_executesql N'SELECT        STOK_HAREKETLERI.sth_belge_tarih AS Tarih, STOK_HAREKETLERI.sth_evrakno_seri AS Seri, STOK_HAREKETLERI.sth_evrakno_sira AS Sıra, CARI_HESAPLAR.cari_kod AS Kodu, CARI_HESAPLAR.cari_unvan1 AS Unvanı, STOK_HAREKETLERI.sth_belge_no AS [Belge No] FROM            CARI_HESAPLAR INNER JOIN STOK_HAREKETLERI ON CARI_HESAPLAR.cari_kod = STOK_HAREKETLERI.sth_cari_kodu WHERE     (sth_tip = 2) AND (sth_evraktip = 2) GROUP BY STOK_HAREKETLERI.sth_belge_tarih, STOK_HAREKETLERI.sth_evrakno_seri, STOK_HAREKETLERI.sth_evrakno_sira, CARI_HESAPLAR.cari_kod,CARI_HESAPLAR.cari_unvan1, STOK_HAREKETLERI.sth_belge_no'");
                    break;
                case EvrakTipleri.AlisIrsaliyesi:
                    dizi = SharEvrakTip(tip);
                    sb.Append("exec sp_executesql N'SELECT        STOK_HAREKETLERI.sth_belge_tarih AS Tarih, STOK_HAREKETLERI.sth_evrakno_seri AS Seri, STOK_HAREKETLERI.sth_evrakno_sira AS Sıra, CARI_HESAPLAR.cari_kod AS Kodu, CARI_HESAPLAR.cari_unvan1 AS Unvanı, STOK_HAREKETLERI.sth_belge_no AS [Belge No] FROM            CARI_HESAPLAR INNER JOIN STOK_HAREKETLERI ON CARI_HESAPLAR.cari_kod = STOK_HAREKETLERI.sth_cari_kodu ");
                    sb.AppendFormat(" WHERE  (sth_evraktip = {0}) GROUP BY STOK_HAREKETLERI.sth_belge_tarih, STOK_HAREKETLERI.sth_evrakno_seri, STOK_HAREKETLERI.sth_evrakno_sira, CARI_HESAPLAR.cari_kod,CARI_HESAPLAR.cari_unvan1, STOK_HAREKETLERI.sth_belge_no'", dizi[3]);
                    break;
                case EvrakTipleri.VerilenSiparis:
                    sb.Append("exec sp_executesql N'SELECT        SIPARISLER.sip_belge_tarih AS Tarih, SIPARISLER.sip_evrakno_seri AS Seri, SIPARISLER.sip_evrakno_sira AS Sıra, CARI_HESAPLAR.cari_kod AS Kodu,CARI_HESAPLAR.cari_unvan1 AS Unvanı, SIPARISLER.sip_belgeno AS [Belge No] FROM            CARI_HESAPLAR INNER JOIN SIPARISLER ON CARI_HESAPLAR.cari_kod = SIPARISLER.sip_musteri_kod  WHERE     (sip_tip = 1) AND (sip_cins = 0) GROUP BY SIPARISLER.sip_belge_tarih, SIPARISLER.sip_evrakno_seri, SIPARISLER.sip_evrakno_sira, CARI_HESAPLAR.cari_kod, CARI_HESAPLAR.cari_unvan1,SIPARISLER.sip_belgeno'");
                    break;
            }

            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand(sb.ToString(), cn))
                {
                    cmd.CommandTimeout = int.MaxValue;
                    using (SqlDataAdapter adp = new SqlDataAdapter(cmd))
                    {
                        adp.Fill(dt);
                    }
                }
            }

            return dt;
        }

        public Evrak EvrakYukle(EvrakTipleri tip, string seri, int sira)
        {
            byte[] dizi = SharEvrakTip(tip);
            StringBuilder sb = new StringBuilder();
            switch (tip)
            {
                case EvrakTipleri.DepoSevk:
                case EvrakTipleri.AlisIrsaliyesi:
                    sb.AppendLine("exec sp_executesql N'SELECT sth.sth_RECno AS id, sth.sth_belge_no AS belgeno, sth.sth_belge_tarih AS tarih, sth.sth_stok_kod AS stokkod, sth.sth_miktar AS miktar, sth.sth_tutar AS tutar,sth.sth_iskonto1 AS isk1, sth.sth_iskonto2 AS isk2, sth.sth_iskonto3 AS isk3, sth.sth_iskonto4 AS isk4, sth.sth_iskonto5 AS isk5, sth.sth_iskonto6 AS isk6,sth.sth_vergi_pntr AS kdvid, dbo.fn_VergiYuzde(sth.sth_vergi_pntr) AS kdvtutar, st.sto_isim AS isim, sth.sth_stok_srm_merkezi AS srm, sth.sth_cari_kodu AS cari,sth.sth_giris_depo_no AS girdepo, sth.sth_cikis_depo_no AS cikdepo FROM STOK_HAREKETLERI AS sth INNER JOIN STOKLAR AS st ON sth.sth_stok_kod = st.sto_kod ");
                    sb.AppendFormat(" WHERE  (sth.sth_evraktip = {1}) AND (sth.sth_evrakno_seri = ''{0}'') and (sth.sth_evrakno_sira = {2})'", seri, dizi[3], sira);
                    break;
                case EvrakTipleri.VerilenSiparis:
                    sb.AppendLine("exec sp_executesql N'SELECT sth.sip_RECno AS id, sth.sip_belgeno AS belgeno, sth.sip_belge_tarih AS tarih, sth.sip_stok_kod AS stokkod, sth.sip_miktar AS miktar, sth.sip_tutar AS tutar,sth.sip_iskonto_1 AS isk1, sth.sip_iskonto_2 AS isk2, sth.sip_iskonto_3 AS isk3, sth.sip_iskonto_4 AS isk4, sth.sip_iskonto_5 AS isk5, sth.sip_iskonto_6 AS isk6,sth.sip_vergi_pntr AS kdvid, dbo.fn_VergiYuzde(sth.sip_vergi_pntr) AS kdvtutar, st.sto_isim AS isim, sth.sip_stok_sormerk AS srm, sth.sip_musteri_kod AS cari,sth.sip_depono AS girdepo,sth.sip_depono AS cikdepo FROM SIPARISLER AS sth INNER JOIN STOKLAR AS st ON sth.sip_stok_kod = st.sto_kod ");
                    sb.AppendFormat(" WHERE  (sth.sip_tip = 1) AND (sth.sip_evrakno_seri = ''{0}'') and (sth.sip_evrakno_sira = {1})'", seri, sira);
                    break;
            }

            DataTable dt = new DataTable();
            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                using (SqlDataAdapter adp = new SqlDataAdapter(sb.ToString(), cn))
                {
                    adp.SelectCommand.Parameters.Add("@seri", SqlDbType.VarChar, 6).Value = seri;
                    adp.SelectCommand.Parameters.Add("@sira", SqlDbType.Int).Value = sira;
                    adp.Fill(dt);
                }
                cn.Close();
            }

            Evrak evr = new Evrak();
            if (dt.Rows.Count > 0)
            {
                evr.BelgeNo = dt.Rows[0]["belgeno"].ToString();
                evr.CariKodu = dt.Rows[0]["cari"].ToString();
                evr.CikisDepo = Cevir.Parse<int>(dt.Rows[0]["cikdepo"]);
                evr.GirisDepo = Cevir.Parse<int>(dt.Rows[0]["girdepo"]);
                evr.SrmMerkesi = dt.Rows[0]["srm"].ToString();
                evr.Tarih = Cevir.Parse<DateTime>(dt.Rows[0]["tarih"]);


                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Hareket hr = new Hareket();
                    hr.Miktar = Cevir.Parse<decimal>(dt.Rows[i]["miktar"]);
                    hr.Tutari = Cevir.Parse<decimal>(dt.Rows[i]["tutar"]);
                    hr.ID = Cevir.Parse<int>(dt.Rows[i]["id"]);
                    hr.KdvSira = Cevir.Parse<byte>(dt.Rows[i]["kdvid"]);
                    hr.KdvOrani = Cevir.Parse<decimal>(dt.Rows[i]["kdvtutar"]);
                    hr.StokKodu = dt.Rows[i]["stokkod"].ToString();
                    hr.StokAdi = dt.Rows[i]["isim"].ToString();
                    hr.BirimFiyati = hr.Tutari / hr.Miktar;

                    decimal isk1 = Cevir.Parse<decimal>(dt.Rows[i]["isk1"]);
                    decimal isk2 = Cevir.Parse<decimal>(dt.Rows[i]["isk2"]);
                    decimal isk3 = Cevir.Parse<decimal>(dt.Rows[i]["isk3"]);
                    decimal isk4 = Cevir.Parse<decimal>(dt.Rows[i]["isk4"]);
                    decimal isk5 = Cevir.Parse<decimal>(dt.Rows[i]["isk5"]);
                    decimal isk6 = Cevir.Parse<decimal>(dt.Rows[i]["isk6"]);

                    hr.Iskonto1 = (isk1 * 100 / hr.Tutari);
                    hr.Iskonto2 = (isk2 * 100 / (hr.Tutari - isk1));
                    hr.Iskonto3 = (isk3 * 100 / (hr.Tutari - isk1 - isk2));
                    hr.Iskonto4 = (isk4 * 100 / (hr.Tutari - isk1 - isk2 - isk3));
                    hr.Iskonto5 = (isk5 * 100 / (hr.Tutari - isk1 - isk2 - isk3 - isk4));
                    hr.Iskonto6 = (isk6 * 100 / (hr.Tutari - isk1 - isk2 - isk3 - isk4 - isk5));

                    evr.Lines.Add(hr);
                }
            }

            return evr;
        }

        public bool EvrakKaydet(EvrakTipleri tip, string seri, int sira, DateTime tarih, string carikodu, string belgeno, string srmmerkezi, int girDepo, int cikDepo, List<Hareket> lines)
        {
            bool sonuc = false;
            try
            {
                Document doc = new Document();
                doc.BelgeTipi = 0;
                doc.FaturaNo = belgeno;
                doc.MusteriNo = carikodu;
                doc.Tarih = tarih;
                int idx = 0;
                foreach (Hareket h in lines)
                {
                    if (!string.IsNullOrEmpty(h.StokKodu) && !string.IsNullOrEmpty(h.StokAdi) && h.Miktar > 0)
                    {
                        doc.Lines.Add(new Line()
                        {
                            Barkod = "",
                            Fiyat = h.BirimFiyati,
                            KdvSirasi = h.KdvSira,
                            KdvToplam = h.KdvTutari,
                            Miktar = h.Miktar,
                            StokKodu = h.StokKodu,
                            Toplam = h.Tutari,
                            Iskonto1 = h.Iskonto1Tutari,
                            Iskonto2 = h.Iskonto2Tutari,
                            Iskonto3 = h.Iskonto3Tutari,
                            Iskonto4 = h.Iskonto4Tutari,
                            Iskonto5 = h.Iskonto5Tutari,
                            Iskonto6 = h.Iskonto6Tutari,
                            ID = idx,
                            KdvOrani = h.KdvOrani,
                            SaticiKodu = 0,
                            Tip = 0
                        });
                        idx++;
                    }
                }

                if (doc.Lines.Count == 0)
                    return false;

                switch (tip)
                {
                    case EvrakTipleri.SatisFaturasi:
                    case EvrakTipleri.AlisFaturasi:
                        break;
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.AlisIrsaliyesi:
                    case EvrakTipleri.DepoSevk:
                        using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
                        {
                            cn.Open();
                            SqlTransaction trn = cn.BeginTransaction();
                            int satir = 0;
                            if (Hafiza.Ctor.ConnectionString.Contains("V15"))
                            {
                                SharEkleV15(tip, doc, trn, seri, sira, ref satir, srmmerkezi, girDepo, cikDepo);
                            }
                            else
                            {
                                SharEkleV14(tip, doc, trn, seri, sira, ref satir, srmmerkezi, girDepo, cikDepo);
                            }


                            try
                            {
                                trn.Commit();
                            }
                            catch (Exception)
                            {
                                if (trn != null)
                                    trn.Rollback();
                            }
                            finally
                            {
                                cn.Close();
                            }
                        }
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        SiparisEkle(lines, tip, seri, sira, belgeno, tarih, carikodu, girDepo, srmmerkezi);
                        break;
                }
                sonuc = true;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            return sonuc;
        }

        public int SharEkleV14(EvrakTipleri tip, Document evrak, SqlTransaction trn, string Seri, int Sira, ref int Satir, string SrmMerkezKodu, int girDepo, int cikDepo)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" if exists(SELECT     sth_evrakno_seri  FROM         STOK_HAREKETLERI  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" 		UPDATE STOK_HAREKETLERI SET ");
            sb.Append(" 							  sth_lastup_user=@kullanici, sth_lastup_date=@crDate, sth_tarih=@Evrak_Tarih, sth_tip=@Tip, sth_cins=@Cins, sth_normal_iade=@Normal_iade, sth_belge_tarih=@Evrak_Tarih,  ");
            sb.Append(" 							  sth_stok_kod=@Stok_kod, sth_cari_kodu=@Cari_kod, sth_plasiyer_kodu=@plasiyer, sth_kur_tarihi='1899-12-30 00:00:00', sth_miktar=@Miktar, sth_miktar2=@Miktar, sth_birim_pntr=1, sth_tutar=@yekun, sth_iskonto1=@isk1_tutar, sth_iskonto2=@isk2_tutar, sth_iskonto3=@isk3_tutar,  ");
            sb.Append(" 							  sth_iskonto4=@isk4_tutar, sth_iskonto5=@isk5_tutar,sth_iskonto6=@isk6_tutar, sth_vergi_pntr=@Kdv,sth_vergi=@kdv_tutar, sth_odeme_op=@odeme, sth_sip_recid_dbcno=@norm_sip_dbc, sth_sip_recid_recno=@norm_sip_rec, sth_giris_depo_no=@GirisDepo, sth_cikis_depo_no=@CikisDepo,  ");
            sb.Append(" 							  sth_malkbl_sevk_tarihi=@Evrak_Tarih, sth_cari_srm_merkezi=@srmerkez, sth_stok_srm_merkezi=@srmerkez, sth_fis_tarihi='1899-12-30 00:00:00', sth_maliyet_ana=@Fiyat, sth_maliyet_alternatif=@Fiyat, sth_maliyet_orjinal=@Fiyat, sth_vardiya_tarihi='1899-12-30 00:00:00',sth_subesip_recid_dbcno=@sube_sip_dbc,sth_subesip_recid_recno=@sube_sip_rec,sth_belge_no=@belge_no, ");
            sb.Append(" 							  sth_firmano=@firma_no,sth_subeno=@sube_no,sth_proje_kodu=@proje ");
            sb.Append(" 		WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" else ");
            sb.Append(" 		INSERT INTO STOK_HAREKETLERI ");
            sb.Append(" 		 (sth_RECid_DBCno,sth_RECid_RECno,sth_SpecRECno,sth_iptal,sth_fileid,sth_hidden,sth_kilitli,sth_degisti,sth_checksum,sth_create_user,sth_create_date,sth_lastup_user,sth_lastup_date,sth_special1,sth_special2,sth_special3,sth_firmano,sth_subeno,sth_tarih,sth_tip,sth_cins,sth_normal_iade,sth_evraktip,sth_evrakno_seri,sth_evrakno_sira,sth_satirno,sth_belge_no,sth_belge_tarih,sth_stok_kod,sth_isk_mas1,sth_isk_mas2,sth_isk_mas3,sth_isk_mas4,sth_isk_mas5,sth_isk_mas6,sth_isk_mas7,sth_isk_mas8,sth_isk_mas9,sth_isk_mas10,sth_sat_iskmas1,sth_sat_iskmas2,sth_sat_iskmas3,sth_sat_iskmas4,sth_sat_iskmas5,sth_sat_iskmas6,sth_sat_iskmas7,sth_sat_iskmas8,sth_sat_iskmas9,sth_sat_iskmas10,sth_pos_satis,sth_cari_cinsi,sth_cari_kodu,sth_cari_grup_no,sth_isemri_gider_kodu,sth_ismerkezi_kodu,sth_plasiyer_kodu,sth_kur_tarihi,sth_har_doviz_cinsi,sth_har_doviz_kuru,sth_alt_doviz_kuru,sth_stok_doviz_cinsi,sth_stok_doviz_kuru,sth_miktar,sth_miktar2,sth_birim_pntr,sth_tutar,sth_iskonto1,sth_iskonto2,sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6,sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4,sth_vergi_pntr,sth_vergi,sth_masraf_vergi_pntr,sth_masraf_vergi,sth_netagirlik,sth_odeme_op,sth_aciklama,sth_sip_recid_dbcno,sth_sip_recid_recno,sth_fat_recid_dbcno,sth_fat_recid_recno,sth_giris_depo_no,sth_cikis_depo_no,sth_malkbl_sevk_tarihi,sth_cari_srm_merkezi,sth_stok_srm_merkezi,sth_fis_tarihi,sth_fis_sirano,sth_vergisiz_fl,sth_maliyet_ana,sth_maliyet_alternatif,sth_maliyet_orjinal,sth_adres_no,sth_parti_kodu,sth_lot_no,sth_kons_recid_dbcno,sth_kons_recid_recno,sth_vardiya_tarihi,sth_vardiya_no,sth_satistipi,sth_proje_kodu,sth_ihracat_kredi_kodu,sth_exim_kodu,sth_otv_pntr,sth_otv_vergi,sth_bkm_recid_dbcno,sth_bkm_recid_recno,sth_karsikons_recid_dbcno,sth_karsikons_recid_recno,sth_iade_evrak_seri,sth_iade_evrak_sira,sth_diib_belge_no,sth_diib_satir_no,sth_mensey_ulke_tipi,sth_mensey_ulke_kodu,sth_brutagirlik,sth_halrehmiktari,sth_halrehfiyati,sth_halsandikmiktari,sth_halsandikfiyati,sth_halsandikkdvtutari,sth_disticaret_turu,sth_otvtutari,sth_otvvergisiz_fl,sth_direkt_iscilik_1,sth_direkt_iscilik_2,sth_direkt_iscilik_3,sth_direkt_iscilik_4,sth_direkt_iscilik_5,sth_genel_uretim_1,sth_genel_uretim_2,sth_genel_uretim_3,sth_genel_uretim_4,sth_genel_uretim_5,sth_yat_tes_kodu,sth_oiv_pntr,sth_oiv_vergi,sth_oivvergisiz_fl,sth_subesip_recid_dbcno,sth_subesip_recid_recno) ");
            sb.Append(" 		VALUES (0,-1,0,0,16,0,0,0,0,@kullanici,@crDate,@kullanici,@crDate,'','','',@firma_no,@sube_no,@Evrak_Tarih,@Tip,@Cins,@Normal_iade,@Evrak_Tip,@Seri,@Sira,@Satir,@belge_no,@Evrak_Tarih,@Stok_kod,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@Cari_kod,0,'','',@plasiyer,'1899-12-30 00:00:00',0,1,1,0,1, @Miktar  , @Miktar  ,1, @yekun   ,@isk1_tutar,@isk2_tutar,@isk3_tutar,@isk4_tutar,@isk5_tutar,@isk6_tutar,0,0,0,0,@Kdv,@kdv_tutar,0,0,0,@odeme,'',@norm_sip_dbc,@norm_sip_rec,0,0,@GirisDepo,@CikisDepo,@Evrak_Tarih,@srmerkez,@srmerkez, '1899-12-30 00:00:00',0,0, @Fiyat  , @Fiyat  , @Fiyat  ,1,'',0,0,0,'1899-12-30 00:00:00',0,0,@proje,'','',0,0,0,0,0,0,'',0,'',0,0,'',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,0,0,@sube_sip_dbc,@sube_sip_rec) ");
            sb.Append(";update STOK_HAREKETLERI set sth_RECid_RECno=sth_RECno where sth_RECid_RECno=-1");

            DateTime defaultTarih = new DateTime(1899, 12, 31);
            try
            {
                using (SqlCommand cmd = new SqlCommand("", trn.Connection))
                {
                    cmd.Transaction = trn;
                    byte[] tipCins = SharEvrakTip(tip);

                    cmd.Parameters.Add("@Tip", SqlDbType.Int);
                    cmd.Parameters.Add("@Cins", SqlDbType.Int);
                    cmd.Parameters.Add("@Normal_iade", SqlDbType.Int);
                    cmd.Parameters.Add("@Evrak_Tip", SqlDbType.Int);
                    cmd.Parameters.Add("@Evrak_Tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@Seri", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Sira", SqlDbType.Int);
                    cmd.Parameters.Add("@crDate", SqlDbType.DateTime);
                    cmd.Parameters.Add("@Cari_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@plasiyer", SqlDbType.VarChar);
                    cmd.Parameters.Add("@srmerkez", SqlDbType.VarChar);
                    cmd.Parameters.Add("@kullanici", SqlDbType.VarChar);
                    cmd.Parameters.Add("@GirisDepo", SqlDbType.Int);
                    cmd.Parameters.Add("@CikisDepo", SqlDbType.Int);
                    cmd.Parameters.Add("@odeme", SqlDbType.Int);
                    cmd.Parameters.Add("@belge_no", SqlDbType.VarChar);
                    cmd.Parameters.Add("@firma_no", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_no", SqlDbType.Int);
                    cmd.Parameters.Add("@proje", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Satir", SqlDbType.Int);
                    cmd.Parameters.Add("@Stok_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Miktar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@yekun", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk1_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk2_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk3_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk4_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk5_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk6_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@Kdv", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_sip_rec", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_sip_dbc", SqlDbType.Int);
                    cmd.Parameters.Add("@norm_sip_rec", SqlDbType.Int);
                    cmd.Parameters.Add("@norm_sip_dbc", SqlDbType.Int);
                    cmd.Parameters.Add("@Fiyat", SqlDbType.Decimal);
                    cmd.Parameters.Add("@kdv_tutar", SqlDbType.Float);

                    foreach (Line row in evrak.Lines)
                    {
                        cmd.CommandText = sb.ToString();
                        cmd.Parameters["@Tip"].Value = tipCins[0];
                        cmd.Parameters["@Cins"].Value = tipCins[1];
                        cmd.Parameters["@Normal_iade"].Value = tipCins[2];
                        cmd.Parameters["@Evrak_Tip"].Value = tipCins[3];
                        cmd.Parameters["@Evrak_Tarih"].Value = new DateTime(evrak.Tarih.Year, evrak.Tarih.Month, evrak.Tarih.Day);
                        cmd.Parameters["@Seri"].Value = Seri;
                        cmd.Parameters["@Sira"].Value = Sira;
                        cmd.Parameters["@crDate"].Value = DateTime.Now;
                        cmd.Parameters["@Cari_kod"].Value = evrak.MusteriNo;
                        cmd.Parameters["@plasiyer"].Value = row.SaticiKodu;
                        cmd.Parameters["@srmerkez"].Value = SrmMerkezKodu;
                        cmd.Parameters["@kullanici"].Value = 0;
                        cmd.Parameters["@GirisDepo"].Value = girDepo;
                        cmd.Parameters["@CikisDepo"].Value = cikDepo;
                        cmd.Parameters["@odeme"].Value = 0;
                        cmd.Parameters["@belge_no"].Value = evrak.FaturaNo;
                        cmd.Parameters["@firma_no"].Value = 0;
                        cmd.Parameters["@sube_no"].Value = 0;
                        cmd.Parameters["@proje"].Value = "";
                        cmd.Parameters["@Satir"].Value = Satir;
                        cmd.Parameters["@Stok_kod"].Value = row.StokKodu;
                        cmd.Parameters["@Miktar"].Value = row.Miktar;
                        cmd.Parameters["@yekun"].Value = row.Toplam - row.KdvToplam;
                        cmd.Parameters["@isk1_tutar"].Value = row.Iskonto1;
                        cmd.Parameters["@isk2_tutar"].Value = row.Iskonto2;
                        cmd.Parameters["@isk3_tutar"].Value = row.Iskonto3;
                        cmd.Parameters["@isk4_tutar"].Value = row.Iskonto4;
                        cmd.Parameters["@isk5_tutar"].Value = row.Iskonto5;
                        cmd.Parameters["@isk6_tutar"].Value = row.Iskonto6;
                        cmd.Parameters["@Kdv"].Value = row.KdvSirasi;
                        cmd.Parameters["@sube_sip_rec"].Value = 0;
                        cmd.Parameters["@sube_sip_dbc"].Value = 0;
                        cmd.Parameters["@norm_sip_rec"].Value = 0;
                        cmd.Parameters["@norm_sip_dbc"].Value = 0;
                        cmd.Parameters["@Fiyat"].Value = row.Fiyat;
                        cmd.Parameters["@kdv_tutar"].Value = row.KdvToplam;
                        cmd.ExecuteNonQuery();
                        Satir++;
                    }
                }
            }
            catch (Exception)
            {
                Satir = -1;
            }
            return Satir;
        }

        public int SharEkleV15(EvrakTipleri tip, Document evrak, SqlTransaction trn, string Seri, int Sira, ref int Satir, string SrmMerkezKodu, int girDepo, int cikDepo)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" if exists(SELECT     sth_evrakno_seri  FROM         STOK_HAREKETLERI  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" 		UPDATE STOK_HAREKETLERI SET ");
            sb.Append(" 							  sth_lastup_user=@kullanici, sth_lastup_date=@crDate, sth_tarih=@Evrak_Tarih, sth_tip=@Tip, sth_cins=@Cins, sth_normal_iade=@Normal_iade, sth_belge_tarih=@Evrak_Tarih,  ");
            sb.Append(" 							  sth_stok_kod=@Stok_kod, sth_cari_kodu=@Cari_kod, sth_plasiyer_kodu=@plasiyer, sth_miktar=@Miktar, sth_miktar2=@Miktar, sth_birim_pntr=1, sth_tutar=@yekun, sth_iskonto1=@isk1_tutar, sth_iskonto2=@isk2_tutar, sth_iskonto3=@isk3_tutar,  ");
            sb.Append(" 							  sth_iskonto4=@isk4_tutar, sth_iskonto5=@isk5_tutar,sth_iskonto6=@isk6_tutar, sth_vergi_pntr=@Kdv,sth_vergi=@kdv_tutar, sth_odeme_op=@odeme, sth_sip_recid_dbcno=@norm_sip_dbc, sth_sip_recid_recno=@norm_sip_rec, sth_giris_depo_no=@GirisDepo, sth_cikis_depo_no=@CikisDepo,  ");
            sb.Append(" 							  sth_malkbl_sevk_tarihi=@Evrak_Tarih, sth_cari_srm_merkezi=@srmerkez, sth_stok_srm_merkezi=@srmerkez, sth_fis_tarihi='1899-12-30 00:00:00', sth_maliyet_ana=@Fiyat, sth_maliyet_alternatif=@Fiyat, sth_maliyet_orjinal=@Fiyat,sth_belge_no=@belge_no, ");
            sb.Append(" 							  sth_firmano=@firma_no,sth_subeno=@sube_no,sth_proje_kodu=@proje ");
            sb.Append(" 		WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" else ");
            sb.Append(" 		INSERT INTO STOK_HAREKETLERI ");
            sb.Append(" 		 (sth_RECid_DBCno,sth_RECid_RECno,sth_SpecRECno,sth_iptal,sth_fileid,sth_hidden,sth_kilitli,sth_degisti,sth_checksum,sth_create_user,sth_create_date,sth_lastup_user,sth_lastup_date,sth_special1,sth_special2,sth_special3,sth_firmano,sth_subeno,sth_tarih,sth_tip,sth_cins,sth_normal_iade,sth_evraktip,sth_evrakno_seri,sth_evrakno_sira,sth_satirno,sth_belge_no,sth_belge_tarih,sth_stok_kod,sth_isk_mas1,sth_isk_mas2,sth_isk_mas3,sth_isk_mas4,sth_isk_mas5,sth_isk_mas6,sth_isk_mas7,sth_isk_mas8,sth_isk_mas9,sth_isk_mas10,sth_sat_iskmas1,sth_sat_iskmas2,sth_sat_iskmas3,sth_sat_iskmas4,sth_sat_iskmas5,sth_sat_iskmas6,sth_sat_iskmas7,sth_sat_iskmas8,sth_sat_iskmas9,sth_sat_iskmas10,sth_pos_satis,sth_cari_cinsi,sth_cari_kodu,sth_cari_grup_no,sth_isemri_gider_kodu,sth_plasiyer_kodu,sth_har_doviz_cinsi,sth_har_doviz_kuru,sth_alt_doviz_kuru,sth_stok_doviz_cinsi,sth_stok_doviz_kuru,sth_miktar,sth_miktar2,sth_birim_pntr,sth_tutar,sth_iskonto1,sth_iskonto2,sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6,sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4,sth_vergi_pntr,sth_vergi,sth_masraf_vergi_pntr,sth_masraf_vergi,sth_netagirlik,sth_odeme_op,sth_aciklama,sth_sip_recid_dbcno,sth_sip_recid_recno,sth_fat_recid_dbcno,sth_fat_recid_recno,sth_giris_depo_no,sth_cikis_depo_no,sth_malkbl_sevk_tarihi,sth_cari_srm_merkezi,sth_stok_srm_merkezi,sth_fis_tarihi,sth_fis_sirano,sth_vergisiz_fl,sth_maliyet_ana,sth_maliyet_alternatif,sth_maliyet_orjinal,sth_adres_no,sth_parti_kodu,sth_lot_no,sth_kons_recid_dbcno,sth_kons_recid_recno,sth_proje_kodu,sth_exim_kodu,sth_otv_pntr,sth_otv_vergi,sth_brutagirlik,sth_disticaret_turu,sth_otvtutari,sth_otvvergisiz_fl,sth_oiv_pntr,sth_oiv_vergi,sth_oivvergisiz_fl) ");
            sb.Append(" 		VALUES (0,-1,0,0,16,0,0,0,0,@kullanici,@crDate,@kullanici,@crDate,'','','',@firma_no,@sube_no,@Evrak_Tarih,@Tip,@Cins,@Normal_iade,@Evrak_Tip,@Seri,@Sira,@Satir,@belge_no,@Evrak_Tarih,@Stok_kod,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@Cari_kod,0,'',@plasiyer,0,1,1,0,1, @Miktar  , @Miktar  ,1, @yekun   ,@isk1_tutar,@isk2_tutar,@isk3_tutar,@isk4_tutar,@isk5_tutar,@isk6_tutar,0,0,0,0,@Kdv,@kdv_tutar,0,0,0,@odeme,'',@norm_sip_dbc,@norm_sip_rec,0,0,@GirisDepo,@CikisDepo,@Evrak_Tarih,@srmerkez,@srmerkez, '1899-12-30 00:00:00',0,0, @Fiyat  , @Fiyat  , @Fiyat  ,1,'',0,0,0,@proje,'',0,0,0,0,0,0,0,0,0) ");
            sb.Append(";update STOK_HAREKETLERI set sth_RECid_RECno=sth_RECno where sth_RECid_RECno=-1");

            DateTime defaultTarih = new DateTime(1899, 12, 31);
            try
            {
                using (SqlCommand cmd = new SqlCommand("", trn.Connection))
                {
                    cmd.Transaction = trn;
                    byte[] tipCins = SharEvrakTip(tip);

                    cmd.Parameters.Add("@Tip", SqlDbType.Int);
                    cmd.Parameters.Add("@Cins", SqlDbType.Int);
                    cmd.Parameters.Add("@Normal_iade", SqlDbType.Int);
                    cmd.Parameters.Add("@Evrak_Tip", SqlDbType.Int);
                    cmd.Parameters.Add("@Evrak_Tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@Seri", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Sira", SqlDbType.Int);
                    cmd.Parameters.Add("@crDate", SqlDbType.DateTime);
                    cmd.Parameters.Add("@Cari_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@plasiyer", SqlDbType.VarChar);
                    cmd.Parameters.Add("@srmerkez", SqlDbType.VarChar);
                    cmd.Parameters.Add("@kullanici", SqlDbType.VarChar);
                    cmd.Parameters.Add("@GirisDepo", SqlDbType.Int);
                    cmd.Parameters.Add("@CikisDepo", SqlDbType.Int);
                    cmd.Parameters.Add("@odeme", SqlDbType.Int);
                    cmd.Parameters.Add("@belge_no", SqlDbType.VarChar);
                    cmd.Parameters.Add("@firma_no", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_no", SqlDbType.Int);
                    cmd.Parameters.Add("@proje", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Satir", SqlDbType.Int);
                    cmd.Parameters.Add("@Stok_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Miktar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@yekun", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk1_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk2_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk3_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk4_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk5_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk6_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@Kdv", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_sip_rec", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_sip_dbc", SqlDbType.Int);
                    cmd.Parameters.Add("@norm_sip_rec", SqlDbType.Int);
                    cmd.Parameters.Add("@norm_sip_dbc", SqlDbType.Int);
                    cmd.Parameters.Add("@Fiyat", SqlDbType.Decimal);
                    cmd.Parameters.Add("@kdv_tutar", SqlDbType.Float);

                    foreach (Line row in evrak.Lines)
                    {
                        try
                        {
                            cmd.CommandText = sb.ToString();
                            cmd.Parameters["@Tip"].Value = tipCins[0];
                            cmd.Parameters["@Cins"].Value = tipCins[1];
                            cmd.Parameters["@Normal_iade"].Value = tipCins[2];
                            cmd.Parameters["@Evrak_Tip"].Value = tipCins[3];
                            cmd.Parameters["@Evrak_Tarih"].Value = new DateTime(evrak.Tarih.Year, evrak.Tarih.Month, evrak.Tarih.Day);
                            cmd.Parameters["@Seri"].Value = Seri;
                            cmd.Parameters["@Sira"].Value = Sira;
                            cmd.Parameters["@crDate"].Value = DateTime.Now;
                            cmd.Parameters["@Cari_kod"].Value = evrak.MusteriNo;
                            cmd.Parameters["@plasiyer"].Value = row.SaticiKodu;
                            cmd.Parameters["@srmerkez"].Value = SrmMerkezKodu;
                            cmd.Parameters["@kullanici"].Value = 0;
                            cmd.Parameters["@GirisDepo"].Value = girDepo;
                            cmd.Parameters["@CikisDepo"].Value = cikDepo;
                            cmd.Parameters["@odeme"].Value = 0;
                            cmd.Parameters["@belge_no"].Value = evrak.FaturaNo;
                            cmd.Parameters["@firma_no"].Value = 0;
                            cmd.Parameters["@sube_no"].Value = 0;
                            cmd.Parameters["@proje"].Value = "";
                            cmd.Parameters["@Satir"].Value = Satir;
                            cmd.Parameters["@Stok_kod"].Value = string.IsNullOrEmpty(row.StokKodu) ? "TANIMSIZ" : row.StokKodu;
                            cmd.Parameters["@Miktar"].Value = row.Miktar;
                            cmd.Parameters["@yekun"].Value = row.Toplam - row.KdvToplam;
                            cmd.Parameters["@isk1_tutar"].Value = row.Iskonto1;
                            cmd.Parameters["@isk2_tutar"].Value = row.Iskonto2;
                            cmd.Parameters["@isk3_tutar"].Value = row.Iskonto3;
                            cmd.Parameters["@isk4_tutar"].Value = row.Iskonto4;
                            cmd.Parameters["@isk5_tutar"].Value = row.Iskonto5;
                            cmd.Parameters["@isk6_tutar"].Value = row.Iskonto6;
                            cmd.Parameters["@Kdv"].Value = row.KdvSirasi;
                            cmd.Parameters["@sube_sip_rec"].Value = 0;
                            cmd.Parameters["@sube_sip_dbc"].Value = 0;
                            cmd.Parameters["@norm_sip_rec"].Value = 0;
                            cmd.Parameters["@norm_sip_dbc"].Value = 0;
                            cmd.Parameters["@Fiyat"].Value = row.Fiyat;
                            cmd.Parameters["@kdv_tutar"].Value = row.KdvToplam;
                            cmd.ExecuteNonQuery();
                        }
                        catch (Exception)
                        {

                        }
                        Satir++;
                    }
                }
            }
            catch (Exception)
            {

            }
            return Satir;
        }

        public bool EvrakSil(EvrakTipleri tip, string seri, int baslangic, int bitis, SqlTransaction trn)
        {
            bool sonuc = false;
            StringBuilder sb = new StringBuilder();
            sb.Append("DELETE  FROM         STOK_HAREKETLERI  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira >=@bas and sth_evrakno_sira <=@bit) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)");
            try
            {
                using (SqlCommand cmd = new SqlCommand(sb.ToString(), trn.Connection))
                {
                    cmd.Transaction = trn;
                    byte[] tipCins = SharEvrakTip(tip);

                    cmd.Parameters.Add("@Tip", SqlDbType.Int).Value = tipCins[0]; ;
                    cmd.Parameters.Add("@Cins", SqlDbType.Int).Value = tipCins[1]; ;
                    cmd.Parameters.Add("@Normal_iade", SqlDbType.Int).Value = tipCins[2];
                    cmd.Parameters.Add("@Evrak_Tip", SqlDbType.Int).Value = tipCins[3];
                    cmd.Parameters.Add("@Seri", SqlDbType.VarChar).Value = seri;
                    cmd.Parameters.Add("@bas", SqlDbType.Int).Value = baslangic;
                    cmd.Parameters.Add("@bit", SqlDbType.Int).Value = bitis;
                    cmd.ExecuteNonQuery();

                    if (tip == EvrakTipleri.AlisFaturasi || tip == EvrakTipleri.SatisFaturasi)
                    {
                        cmd.CommandText = "DELETE  FROM         CARI_HESAP_HAREKETLERI  WHERE     (cha_evrakno_seri = @Seri) AND (cha_evrakno_sira >=@bas and cha_evrakno_sira <=@bit) AND (cha_evrak_tip = @Evrak_Tip) AND (cha_tip=@Tip) AND (cha_cinsi=@Cins) and (cha_normal_Iade=@Normal_iade)";
                        tipCins = CharEvrakTip(tip);
                        cmd.Parameters["@Tip"].Value = tipCins[0];
                        cmd.Parameters["@Cins"].Value = tipCins[1];
                        cmd.Parameters["@Normal_iade"].Value = tipCins[2];
                        cmd.Parameters["@Evrak_Tip"].Value = tipCins[3];
                        cmd.ExecuteNonQuery();
                    }
                }
                sonuc = true;
            }
            catch (Exception)
            {
                sonuc = false;
            }
            return sonuc;
        }

        private int CharEkleV14(EvrakTipleri tip, string evrakSeri, int evrakSira, int satir, DateTime evrakTarihi, decimal meblag, decimal[] vergiler, string saticiKodu, string cariKodu, decimal araToplam, string belgeNo, int vade, string aciklama, decimal isk1Tutar, decimal isk2Tutar, decimal isk3Tutar, int cariCins, string kasaKodu, string srmMerkezi, string projeKodu, int kdvSira, SqlTransaction trn)
        {
            string sqlStr = "if exists(SELECT     cha_RECno FROM         CARI_HESAP_HAREKETLERI WHERE     (cha_evrak_tip = @cha_evrak_tip) AND (cha_evrakno_seri = @cha_evrakno_seri) AND (cha_evrakno_sira = @cha_evrakno_sira) AND (cha_satir_no = @cha_satir_no)) delete FROM CARI_HESAP_HAREKETLERI WHERE     (cha_evrak_tip = @cha_evrak_tip) AND (cha_evrakno_seri = @cha_evrakno_seri) AND (cha_evrakno_sira = @cha_evrakno_sira) AND (cha_satir_no = @cha_satir_no);insert into CARI_HESAP_HAREKETLERI (cha_RECid_DBCno,cha_RECid_RECno,cha_SpecRecNo,cha_iptal,cha_fileid,cha_hidden,cha_kilitli,cha_degisti,cha_CheckSum,cha_create_user,cha_create_date,cha_lastup_user,cha_lastup_date,cha_special1,cha_special2,cha_special3,cha_firmano,cha_subeno,cha_tarihi,cha_tip,cha_cinsi,cha_normal_Iade,cha_evrak_tip,cha_satir_no,cha_evrakno_seri,cha_evrakno_sira,cha_belge_no,cha_belge_tarih,cha_cari_cins,cha_kod,cha_kasa_hizmet,cha_kasa_hizkod,cha_d_kurtar,cha_d_cins,cha_d_kur,cha_altd_kur,cha_grupno,cha_meblag,cha_vade,cha_fis_tarih,cha_fis_sirano,cha_ft_iskonto1,cha_ft_iskonto2,cha_ft_iskonto3,cha_ft_iskonto4,cha_ft_iskonto5,cha_ft_iskonto6,cha_ft_masraf1,cha_ft_masraf2,cha_ft_masraf3,cha_ft_masraf4,cha_vergi1,cha_vergi2,cha_vergi3,cha_vergi4,cha_vergi5,cha_vergi6,cha_vergi7,cha_vergi8,cha_vergi9,cha_vergi10,cha_yuvarlama,cha_tpoz,cha_aciklama,cha_trefno,cha_sntck_poz,cha_karsidcinsi,cha_karsid_kur,cha_karsidgrupno,cha_srmrkkodu,cha_reftarihi,cha_odeme_arr1,cha_odeme_arr2,cha_odeme_arr3,cha_odeme_arr4,cha_odeme_arr5,cha_odeme_arr6,cha_odeme_arr7,cha_odeme_arr8,cha_miktari,cha_aratoplam,cha_vergipntr,cha_istisnakodu,cha_ver_tev_carpani,cha_stopaj,cha_savsandesfonu,cha_vergisiz_fl,cha_satici_kodu,cha_mustahsil_borsa,cha_mustahsil_bagkur,cha_mustahsil_diger,cha_HalMSDF,cha_HalHamaliye,cha_HalStopaj,cha_HalKomisyonu,cha_StFonPntr,cha_pos_hareketi,cha_vardiya_tarihi,cha_vardiya_no,cha_vardiya_evrak_ti,cha_HalRusum,cha_HalNavlunTut,cha_HalRehinFuture,cha_HalKomisyon,cha_Vade_Farki_Yuz,cha_karsisrmrkkodu,cha_EXIMkodu,cha_HalRehinSandikmiktari,cha_HalSandikVrMiktar,cha_HalSandikTutari,cha_HalSandikKDVTutari,cha_HalrehinSandikTutari,cha_Tevkifat_turu,cha_ticaret_turu,cha_otvtutari,cha_otvvergisiz_fl,cha_projekodu,cha_sozlesme_DBCno,cha_sozlesme_RECno,cha_yat_tes_kodu,cha_ciro_cari_kodu,cha_oivergisiz_fl,cha_meblag_ana_doviz_icin_gecersiz_fl,cha_meblag_alt_doviz_icin_gecersiz_fl,cha_meblag_orj_doviz_icin_gecersiz_fl,cha_ciroprim_DBCno,cha_ciroprim_RECno,cha_HalHamaliyeKdv,cha_HalHamaliyeVergisiz_fl) values (@cha_RECid_DBCno,@cha_RECid_RECno,@cha_SpecRecNo,@cha_iptal,@cha_fileid,@cha_hidden,@cha_kilitli,@cha_degisti,@cha_CheckSum,@cha_create_user,@cha_create_date,@cha_lastup_user,@cha_lastup_date,@cha_special1,@cha_special2,@cha_special3,@cha_firmano,@cha_subeno,@cha_tarihi,@cha_tip,@cha_cinsi,@cha_normal_Iade,@cha_evrak_tip,@cha_satir_no,@cha_evrakno_seri,@cha_evrakno_sira,@cha_belge_no,@cha_belge_tarih,@cha_cari_cins,@cha_kod,@cha_kasa_hizmet,@cha_kasa_hizkod,@cha_d_kurtar,@cha_d_cins,@cha_d_kur,@cha_altd_kur,@cha_grupno,@cha_meblag,@cha_vade,@cha_fis_tarih,@cha_fis_sirano,@cha_ft_iskonto1,@cha_ft_iskonto2,@cha_ft_iskonto3,@cha_ft_iskonto4,@cha_ft_iskonto5,@cha_ft_iskonto6,@cha_ft_masraf1,@cha_ft_masraf2,@cha_ft_masraf3,@cha_ft_masraf4,@cha_vergi1,@cha_vergi2,@cha_vergi3,@cha_vergi4,@cha_vergi5,@cha_vergi6,@cha_vergi7,@cha_vergi8,@cha_vergi9,@cha_vergi10,@cha_yuvarlama,@cha_tpoz,@cha_aciklama,@cha_trefno,@cha_sntck_poz,@cha_karsidcinsi,@cha_karsid_kur,@cha_karsidgrupno,@cha_srmrkkodu,@cha_reftarihi,@cha_odeme_arr1,@cha_odeme_arr2,@cha_odeme_arr3,@cha_odeme_arr4,@cha_odeme_arr5,@cha_odeme_arr6,@cha_odeme_arr7,@cha_odeme_arr8,@cha_miktari,@cha_aratoplam,@cha_vergipntr,@cha_istisnakodu,@cha_ver_tev_carpani,@cha_stopaj,@cha_savsandesfonu,@cha_vergisiz_fl,@cha_satici_kodu,@cha_mustahsil_borsa,@cha_mustahsil_bagkur,@cha_mustahsil_diger,@cha_HalMSDF,@cha_HalHamaliye,@cha_HalStopaj,@cha_HalKomisyonu,@cha_StFonPntr,@cha_pos_hareketi,@cha_vardiya_tarihi,@cha_vardiya_no,@cha_vardiya_evrak_ti,@cha_HalRusum,@cha_HalNavlunTut,@cha_HalRehinFuture,@cha_HalKomisyon,@cha_Vade_Farki_Yuz,@cha_karsisrmrkkodu,@cha_EXIMkodu,@cha_HalRehinSandikmiktari,@cha_HalSandikVrMiktar,@cha_HalSandikTutari,@cha_HalSandikKDVTutari,@cha_HalrehinSandikTutari,@cha_Tevkifat_turu,@cha_ticaret_turu,@cha_otvtutari,@cha_otvvergisiz_fl,@cha_projekodu,@cha_sozlesme_DBCno,@cha_sozlesme_RECno,@cha_yat_tes_kodu,@cha_ciro_cari_kodu,@cha_oivergisiz_fl,@cha_meblag_ana_doviz_icin_gecersiz_fl,@cha_meblag_alt_doviz_icin_gecersiz_fl,@cha_meblag_orj_doviz_icin_gecersiz_fl,@cha_ciroprim_DBCno,@cha_ciroprim_RECno,@cha_HalHamaliyeKdv,@cha_HalHamaliyeVergisiz_fl);SELECT SCOPE_IDENTITY()";
            List<SqlParameter> prmList = new List<SqlParameter>();
            byte[] tipler = CharEvrakTip(tip);

            prmList.Add(new SqlParameter() { ParameterName = "@cha_RECid_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_RECid_RECno", SqlDbType = SqlDbType.Int, Value = -1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_SpecRecNo", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_iptal", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fileid", SqlDbType = SqlDbType.SmallInt, Value = 51 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_hidden", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kilitli", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_degisti", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_CheckSum", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_create_user", SqlDbType = SqlDbType.SmallInt, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_create_date", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_lastup_user", SqlDbType = SqlDbType.SmallInt, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_lastup_date", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special1", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special2", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special3", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_firmano", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_subeno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_tarihi", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_tip", SqlDbType = SqlDbType.TinyInt, Value = tipler[0] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_cinsi", SqlDbType = SqlDbType.TinyInt, Value = tipler[1] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_normal_Iade", SqlDbType = SqlDbType.TinyInt, Value = tipler[2] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrak_tip", SqlDbType = SqlDbType.TinyInt, Value = tipler[3] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_satir_no", SqlDbType = SqlDbType.Int, Value = satir });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrakno_seri", SqlDbType = SqlDbType.NVarChar, Value = evrakSeri });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrakno_sira", SqlDbType = SqlDbType.Int, Value = evrakSira });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_belge_no", SqlDbType = SqlDbType.NVarChar, Value = belgeNo });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_belge_tarih", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_cari_cins", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kod", SqlDbType = SqlDbType.NVarChar, Value = cariKodu });

            //if (tip == EvrakTipleri.ToptanSatisFaturasi)
            //{
            //    prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizmet", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            //    prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizkod", SqlDbType = SqlDbType.NVarChar, Value = "" });
            //}
            //else
            //{
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizmet", SqlDbType = SqlDbType.TinyInt, Value = 3 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizkod", SqlDbType = SqlDbType.NVarChar, Value = kasaKodu });
            //}

            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_kurtar", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_cins", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_kur", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_altd_kur", SqlDbType = SqlDbType.Float, Value = 1 });

            if (cariCins == 2)
            {
                prmList.Add(new SqlParameter() { ParameterName = "@cha_grupno", SqlDbType = SqlDbType.TinyInt, Value = 1 });
            }
            else
            {
                prmList.Add(new SqlParameter() { ParameterName = "@cha_grupno", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            }

            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag", SqlDbType = SqlDbType.Float, Value = meblag });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vade", SqlDbType = SqlDbType.Int, Value = vade });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fis_tarih", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fis_sirano", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto1", SqlDbType = SqlDbType.Float, Value = isk1Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto2", SqlDbType = SqlDbType.Float, Value = isk2Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto3", SqlDbType = SqlDbType.Float, Value = isk3Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto5", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto6", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf1", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf2", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf3", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi1", SqlDbType = SqlDbType.Float, Value = vergiler[0] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi2", SqlDbType = SqlDbType.Float, Value = vergiler[1] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi3", SqlDbType = SqlDbType.Float, Value = vergiler[2] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi4", SqlDbType = SqlDbType.Float, Value = vergiler[3] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi5", SqlDbType = SqlDbType.Float, Value = vergiler[4] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi6", SqlDbType = SqlDbType.Float, Value = vergiler[5] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi7", SqlDbType = SqlDbType.Float, Value = vergiler[6] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi8", SqlDbType = SqlDbType.Float, Value = vergiler[7] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi9", SqlDbType = SqlDbType.Float, Value = vergiler[8] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi10", SqlDbType = SqlDbType.Float, Value = vergiler[9] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_yuvarlama", SqlDbType = SqlDbType.Float, Value = 0 });

            if (cariCins == 4)
                prmList.Add(new SqlParameter() { ParameterName = "@cha_tpoz", SqlDbType = SqlDbType.TinyInt, Value = 1 });
            else
                prmList.Add(new SqlParameter() { ParameterName = "@cha_tpoz", SqlDbType = SqlDbType.TinyInt, Value = 0 });

            prmList.Add(new SqlParameter() { ParameterName = "@cha_aciklama", SqlDbType = SqlDbType.NVarChar, Value = aciklama });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_trefno", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sntck_poz", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsidcinsi", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsid_kur", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsidgrupno", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_srmrkkodu", SqlDbType = SqlDbType.NVarChar, Value = srmMerkezi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_reftarihi", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr1", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr2", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr3", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr5", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr6", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr7", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr8", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_miktari", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_aratoplam", SqlDbType = SqlDbType.Float, Value = araToplam });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergipntr", SqlDbType = SqlDbType.TinyInt, Value = kdvSira });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_istisnakodu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ver_tev_carpani", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_stopaj", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_savsandesfonu", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_satici_kodu", SqlDbType = SqlDbType.NVarChar, Value = saticiKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_mustahsil_borsa", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_mustahsil_bagkur", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_mustahsil_diger", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalMSDF", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalHamaliye", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalStopaj", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalKomisyonu", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_StFonPntr", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_pos_hareketi", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_tarihi", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_no", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_evrak_ti", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalRusum", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalNavlunTut", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalRehinFuture", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalKomisyon", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_Vade_Farki_Yuz", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsisrmrkkodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_EXIMkodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalRehinSandikmiktari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalSandikVrMiktar", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalSandikTutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalSandikKDVTutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalrehinSandikTutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_Tevkifat_turu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ticaret_turu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_otvtutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_otvvergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_projekodu", SqlDbType = SqlDbType.NVarChar, Value = projeKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sozlesme_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sozlesme_RECno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_yat_tes_kodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciro_cari_kodu", SqlDbType = SqlDbType.NVarChar, Value = cariKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_oivergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_ana_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_alt_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_orj_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciroprim_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciroprim_RECno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalHamaliyeKdv", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalHamaliyeVergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });

            int sonuc = -1;

            using (SqlCommand cmd = new SqlCommand(sqlStr, trn.Connection))
            {
                cmd.Transaction = trn;
                foreach (var item in prmList)
                {
                    cmd.Parameters.Add(item);
                }
                object recid = cmd.ExecuteScalar();
                if (recid != null)
                {
                    cmd.Parameters.Clear();
                    cmd.CommandText = string.Format("UPDATE CARI_HESAP_HAREKETLERI SET cha_RECid_RECno=cha_RECno WHERE cha_RECno={0}", recid.ToString());
                    cmd.ExecuteNonQuery();
                    sonuc = Convert.ToInt32(recid);
                }
            }
            return sonuc;
        }

        private int CharEkleV15(EvrakTipleri tip, string evrakSeri, int evrakSira, int satir, DateTime evrakTarihi, decimal meblag, decimal[] vergiler, string saticiKodu, string cariKodu, decimal araToplam, string belgeNo, int vade, string aciklama, decimal isk1Tutar, decimal isk2Tutar, decimal isk3Tutar, int cariCins, string kasaKodu, string srmMerkezi, string projeKodu, int kdvSira, SqlTransaction trn)
        {
            string sqlStr = "if exists(SELECT     cha_RECno FROM         CARI_HESAP_HAREKETLERI WHERE     (cha_evrak_tip = @cha_evrak_tip) AND (cha_evrakno_seri = @cha_evrakno_seri) AND (cha_evrakno_sira = @cha_evrakno_sira) AND (cha_satir_no = @cha_satir_no)) delete FROM CARI_HESAP_HAREKETLERI WHERE     (cha_evrak_tip = @cha_evrak_tip) AND (cha_evrakno_seri = @cha_evrakno_seri) AND (cha_evrakno_sira = @cha_evrakno_sira) AND (cha_satir_no = @cha_satir_no);insert into CARI_HESAP_HAREKETLERI (cha_RECid_DBCno,cha_RECid_RECno,cha_SpecRecNo,cha_iptal,cha_fileid,cha_hidden,cha_kilitli,cha_degisti,cha_CheckSum,cha_create_user,cha_create_date,cha_lastup_user,cha_lastup_date,cha_special1,cha_special2,cha_special3,cha_firmano,cha_subeno,cha_tarihi,cha_tip,cha_cinsi,cha_normal_Iade,cha_evrak_tip,cha_satir_no,cha_evrakno_seri,cha_evrakno_sira,cha_belge_no,cha_belge_tarih,cha_cari_cins,cha_kod,cha_kasa_hizmet,cha_kasa_hizkod,cha_d_cins,cha_d_kur,cha_altd_kur,cha_grupno,cha_meblag,cha_vade,cha_fis_tarih,cha_fis_sirano,cha_ft_iskonto1,cha_ft_iskonto2,cha_ft_iskonto3,cha_ft_iskonto4,cha_ft_iskonto5,cha_ft_iskonto6,cha_ft_masraf1,cha_ft_masraf2,cha_ft_masraf3,cha_ft_masraf4,cha_vergi1,cha_vergi2,cha_vergi3,cha_vergi4,cha_vergi5,cha_vergi6,cha_vergi7,cha_vergi8,cha_vergi9,cha_vergi10,cha_yuvarlama,cha_tpoz,cha_aciklama,cha_trefno,cha_sntck_poz,cha_karsidcinsi,cha_karsid_kur,cha_karsidgrupno,cha_srmrkkodu,cha_reftarihi,cha_miktari,cha_aratoplam,cha_vergipntr,cha_istisnakodu,cha_stopaj,cha_savsandesfonu,cha_vergisiz_fl,cha_satici_kodu,cha_StFonPntr,cha_pos_hareketi,cha_vardiya_tarihi,cha_vardiya_no,cha_vardiya_evrak_ti,cha_Vade_Farki_Yuz,cha_karsisrmrkkodu,cha_EXIMkodu,cha_ticaret_turu,cha_otvtutari,cha_otvvergisiz_fl,cha_projekodu,cha_yat_tes_kodu,cha_ciro_cari_kodu,cha_oivergisiz_fl,cha_meblag_ana_doviz_icin_gecersiz_fl,cha_meblag_alt_doviz_icin_gecersiz_fl,cha_meblag_orj_doviz_icin_gecersiz_fl) values (@cha_RECid_DBCno,@cha_RECid_RECno,@cha_SpecRecNo,@cha_iptal,@cha_fileid,@cha_hidden,@cha_kilitli,@cha_degisti,@cha_CheckSum,@cha_create_user,@cha_create_date,@cha_lastup_user,@cha_lastup_date,@cha_special1,@cha_special2,@cha_special3,@cha_firmano,@cha_subeno,@cha_tarihi,@cha_tip,@cha_cinsi,@cha_normal_Iade,@cha_evrak_tip,@cha_satir_no,@cha_evrakno_seri,@cha_evrakno_sira,@cha_belge_no,@cha_belge_tarih,@cha_cari_cins,@cha_kod,@cha_kasa_hizmet,@cha_kasa_hizkod,@cha_d_cins,@cha_d_kur,@cha_altd_kur,@cha_grupno,@cha_meblag,@cha_vade,@cha_fis_tarih,@cha_fis_sirano,@cha_ft_iskonto1,@cha_ft_iskonto2,@cha_ft_iskonto3,@cha_ft_iskonto4,@cha_ft_iskonto5,@cha_ft_iskonto6,@cha_ft_masraf1,@cha_ft_masraf2,@cha_ft_masraf3,@cha_ft_masraf4,@cha_vergi1,@cha_vergi2,@cha_vergi3,@cha_vergi4,@cha_vergi5,@cha_vergi6,@cha_vergi7,@cha_vergi8,@cha_vergi9,@cha_vergi10,@cha_yuvarlama,@cha_tpoz,@cha_aciklama,@cha_trefno,@cha_sntck_poz,@cha_karsidcinsi,@cha_karsid_kur,@cha_karsidgrupno,@cha_srmrkkodu,@cha_reftarihi,@cha_miktari,@cha_aratoplam,@cha_vergipntr,@cha_istisnakodu,@cha_stopaj,@cha_savsandesfonu,@cha_vergisiz_fl,@cha_satici_kodu,@cha_StFonPntr,@cha_pos_hareketi,@cha_vardiya_tarihi,@cha_vardiya_no,@cha_vardiya_evrak_ti,@cha_Vade_Farki_Yuz,@cha_karsisrmrkkodu,@cha_EXIMkodu,@cha_ticaret_turu,@cha_otvtutari,@cha_otvvergisiz_fl,@cha_projekodu,@cha_yat_tes_kodu,@cha_ciro_cari_kodu,@cha_oivergisiz_fl,@cha_meblag_ana_doviz_icin_gecersiz_fl,@cha_meblag_alt_doviz_icin_gecersiz_fl,@cha_meblag_orj_doviz_icin_gecersiz_fl);SELECT SCOPE_IDENTITY()";
            List<SqlParameter> prmList = new List<SqlParameter>();
            byte[] tipler = CharEvrakTip(tip);

            prmList.Add(new SqlParameter() { ParameterName = "@cha_RECid_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_RECid_RECno", SqlDbType = SqlDbType.Int, Value = -1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_SpecRecNo", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_iptal", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fileid", SqlDbType = SqlDbType.SmallInt, Value = 51 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_hidden", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kilitli", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_degisti", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_CheckSum", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_create_user", SqlDbType = SqlDbType.SmallInt, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_create_date", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_lastup_user", SqlDbType = SqlDbType.SmallInt, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_lastup_date", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special1", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special2", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special3", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_firmano", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_subeno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_tarihi", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_tip", SqlDbType = SqlDbType.TinyInt, Value = tipler[0] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_cinsi", SqlDbType = SqlDbType.TinyInt, Value = tipler[1] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_normal_Iade", SqlDbType = SqlDbType.TinyInt, Value = tipler[2] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrak_tip", SqlDbType = SqlDbType.TinyInt, Value = tipler[3] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_satir_no", SqlDbType = SqlDbType.Int, Value = satir });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrakno_seri", SqlDbType = SqlDbType.NVarChar, Value = evrakSeri });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrakno_sira", SqlDbType = SqlDbType.Int, Value = evrakSira });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_belge_no", SqlDbType = SqlDbType.NVarChar, Value = belgeNo });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_belge_tarih", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_cari_cins", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kod", SqlDbType = SqlDbType.NVarChar, Value = cariKodu });

            //if (tip == EvrakTipleri.ToptanSatisFaturasi)
            //{
            //    prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizmet", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            //    prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizkod", SqlDbType = SqlDbType.NVarChar, Value = "" });
            //}
            //else
            //{
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizmet", SqlDbType = SqlDbType.TinyInt, Value = 3 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizkod", SqlDbType = SqlDbType.NVarChar, Value = kasaKodu });
            //}

            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_cins", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_kur", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_altd_kur", SqlDbType = SqlDbType.Float, Value = 1 });

            if (cariCins == 2)
            {
                prmList.Add(new SqlParameter() { ParameterName = "@cha_grupno", SqlDbType = SqlDbType.TinyInt, Value = 1 });
            }
            else
            {
                prmList.Add(new SqlParameter() { ParameterName = "@cha_grupno", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            }

            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag", SqlDbType = SqlDbType.Float, Value = meblag });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vade", SqlDbType = SqlDbType.Int, Value = vade });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fis_tarih", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fis_sirano", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto1", SqlDbType = SqlDbType.Float, Value = isk1Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto2", SqlDbType = SqlDbType.Float, Value = isk2Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto3", SqlDbType = SqlDbType.Float, Value = isk3Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto5", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto6", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf1", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf2", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf3", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi1", SqlDbType = SqlDbType.Float, Value = vergiler[0] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi2", SqlDbType = SqlDbType.Float, Value = vergiler[1] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi3", SqlDbType = SqlDbType.Float, Value = vergiler[2] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi4", SqlDbType = SqlDbType.Float, Value = vergiler[3] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi5", SqlDbType = SqlDbType.Float, Value = vergiler[4] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi6", SqlDbType = SqlDbType.Float, Value = vergiler[5] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi7", SqlDbType = SqlDbType.Float, Value = vergiler[6] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi8", SqlDbType = SqlDbType.Float, Value = vergiler[7] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi9", SqlDbType = SqlDbType.Float, Value = vergiler[8] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi10", SqlDbType = SqlDbType.Float, Value = vergiler[9] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_yuvarlama", SqlDbType = SqlDbType.Float, Value = 0 });

            if (cariCins == 4)
                prmList.Add(new SqlParameter() { ParameterName = "@cha_tpoz", SqlDbType = SqlDbType.TinyInt, Value = 1 });
            else
                prmList.Add(new SqlParameter() { ParameterName = "@cha_tpoz", SqlDbType = SqlDbType.TinyInt, Value = 0 });

            prmList.Add(new SqlParameter() { ParameterName = "@cha_aciklama", SqlDbType = SqlDbType.NVarChar, Value = aciklama });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_trefno", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sntck_poz", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsidcinsi", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsid_kur", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsidgrupno", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_srmrkkodu", SqlDbType = SqlDbType.NVarChar, Value = srmMerkezi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_reftarihi", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_miktari", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_aratoplam", SqlDbType = SqlDbType.Float, Value = araToplam });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergipntr", SqlDbType = SqlDbType.TinyInt, Value = kdvSira });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_istisnakodu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_stopaj", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_savsandesfonu", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_satici_kodu", SqlDbType = SqlDbType.NVarChar, Value = saticiKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_StFonPntr", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_pos_hareketi", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_tarihi", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_no", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_evrak_ti", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_Vade_Farki_Yuz", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsisrmrkkodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_EXIMkodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ticaret_turu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_otvtutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_otvvergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_projekodu", SqlDbType = SqlDbType.NVarChar, Value = projeKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_yat_tes_kodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciro_cari_kodu", SqlDbType = SqlDbType.NVarChar, Value = cariKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_oivergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_ana_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_alt_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_orj_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });

            int sonuc = -1;

            using (SqlCommand cmd = new SqlCommand(sqlStr, trn.Connection))
            {
                cmd.Transaction = trn;
                foreach (var item in prmList)
                {
                    cmd.Parameters.Add(item);
                }
                object recid = cmd.ExecuteScalar();
                if (recid != null)
                {
                    cmd.Parameters.Clear();
                    cmd.CommandText = string.Format("UPDATE CARI_HESAP_HAREKETLERI SET cha_RECid_RECno=cha_RECno WHERE cha_RECno={0}", recid.ToString());
                    cmd.ExecuteNonQuery();
                    sonuc = Convert.ToInt32(recid);
                }
            }
            return sonuc;
        }

        private void SiparisEkle(List<Hareket> rows, EvrakTipleri evrakCinsi, string seri, int sira, string belgeNo, DateTime tarih, string carikodu, int girDepo, string sorMerkez)
        {
            byte[] cins = SharEvrakTip(evrakCinsi);
            StringBuilder sb = new StringBuilder();
            sb.Append("if exists(select sip_RECno from SIPARISLER where sip_tip=@sip_tip and sip_cins=@sip_cins and sip_evrakno_seri=@sip_evrakno_seri and sip_evrakno_sira=@sip_evrakno_sira and sip_satirno=@sip_satirno )");
            sb.Append("update SIPARISLER set sip_SpecRECno=0,sip_iptal=0,sip_fileid=21,sip_hidden=0,sip_kilitli=0,sip_degisti=0,sip_checksum=0,sip_create_user=@sip_create_user,sip_create_date=@sip_create_date,sip_lastup_user=@sip_lastup_user,sip_lastup_date=@sip_lastup_date,sip_special1='',sip_special2='',sip_special3='',sip_firmano=0,sip_subeno=0,sip_tarih=@sip_tarih,sip_teslim_tarih=@sip_teslim_tarih,sip_belgeno=@sip_belgeno,sip_belge_tarih=@sip_belge_tarih,sip_satici_kod=@sip_satici_kod,sip_musteri_kod=@sip_musteri_kod,sip_stok_kod=@sip_stok_kod,sip_b_fiyat=@sip_b_fiyat,sip_miktar=@sip_miktar,sip_birim_pntr=@sip_birim_pntr,sip_teslim_miktar=0,sip_tutar=@sip_tutar,sip_iskonto_1=@sip_iskonto_1,sip_iskonto_2=@sip_iskonto_2,sip_iskonto_3=@sip_iskonto_3,sip_iskonto_4=@sip_iskonto_4,sip_iskonto_5=@sip_iskonto_5,sip_iskonto_6=0,sip_masraf_1=0,sip_masraf_2=0,sip_masraf_3=0,sip_masraf_4=0,sip_vergi_pntr=@sip_vergi_pntr,sip_vergi=@sip_vergi,sip_masvergi_pntr=0,sip_masvergi=0,sip_aciklama='',sip_aciklama2='',sip_depono=@sip_depono,sip_OnaylayanKulNo=0,sip_vergisiz_fl=0,sip_kapat_fl=0,sip_promosyon_fl=0,sip_cari_sormerk=@sip_cari_sormerk,sip_stok_sormerk=@sip_stok_sormerk,sip_cari_grupno=0,sip_doviz_cinsi=0,sip_doviz_kuru=1,sip_alt_doviz_kuru=1,sip_adresno=1,sip_teslimturu='',sip_cagrilabilir_fl=1,sip_prosiprecDbId=0,sip_prosiprecrecI=0,sip_iskonto1=1,sip_iskonto2=1,sip_iskonto3=1,sip_iskonto4=1,sip_iskonto5=1,sip_iskonto6=1,sip_masraf1=1,sip_masraf2=1,sip_masraf3=1,sip_masraf4=1,sip_isk1=1,sip_isk2=1,sip_isk3=1,sip_isk4=1,sip_isk5=1,sip_isk6=0,sip_mas1=0,sip_mas2=0,sip_mas3=0,sip_mas4=0,sip_Exp_Imp_Kodu='',sip_kar_orani=0,sip_durumu=0,sip_stalRecId_DBCno=0,sip_stalRecId_RECno=0,sip_planlananmiktar=0,sip_teklifRecId_DBCno=0,sip_teklifRecId_RECno=0,sip_parti_kodu='',sip_lot_no=0,sip_projekodu='',sip_fiyat_liste_no=0,sip_Otv_Pntr=0,sip_Otv_Vergi=0,sip_otvtutari=0,sip_OtvVergisiz_Fl=0,sip_paket_kod='',sip_RezRecId_DBCno=0,sip_RezRecId_RECno=0,sip_harekettipi=0,sip_yetkili_recid_dbcno=0,sip_yetkili_recid_recno=0,sip_kapatmanedenkod='',sip_opno=@vade where sip_tip='1' and sip_cins='0' and sip_evrakno_seri='SIP' and sip_evrakno_sira='1' and sip_satirno='0'  else ");
            sb.Append("insert into SIPARISLER (sip_RECid_DBCno,sip_RECid_RECno,sip_SpecRECno,sip_iptal,sip_fileid,sip_hidden,sip_kilitli,sip_degisti,sip_checksum,sip_create_user,sip_create_date,sip_lastup_user,sip_lastup_date,sip_special1,sip_special2,sip_special3,sip_firmano,sip_subeno,sip_tarih,sip_teslim_tarih,sip_tip,sip_cins,sip_evrakno_seri,sip_evrakno_sira,sip_satirno,sip_belgeno,sip_belge_tarih,sip_satici_kod,sip_musteri_kod,sip_stok_kod,sip_b_fiyat,sip_miktar,sip_birim_pntr,sip_teslim_miktar,sip_tutar,sip_iskonto_1,sip_iskonto_2,sip_iskonto_3,sip_iskonto_4,sip_iskonto_5,sip_iskonto_6,sip_masraf_1,sip_masraf_2,sip_masraf_3,sip_masraf_4,sip_vergi_pntr,sip_vergi,sip_masvergi_pntr,sip_masvergi,sip_aciklama,sip_aciklama2,sip_depono,sip_OnaylayanKulNo,sip_vergisiz_fl,sip_kapat_fl,sip_promosyon_fl,sip_cari_sormerk,sip_stok_sormerk,sip_cari_grupno,sip_doviz_cinsi,sip_doviz_kuru,sip_alt_doviz_kuru,sip_adresno,sip_teslimturu,sip_cagrilabilir_fl,sip_prosiprecDbId,sip_prosiprecrecI,sip_iskonto1,sip_iskonto2,sip_iskonto3,sip_iskonto4,sip_iskonto5,sip_iskonto6,sip_masraf1,sip_masraf2,sip_masraf3,sip_masraf4,sip_isk1,sip_isk2,sip_isk3,sip_isk4,sip_isk5,sip_isk6,sip_mas1,sip_mas2,sip_mas3,sip_mas4,sip_Exp_Imp_Kodu,sip_kar_orani,sip_durumu,sip_stalRecId_DBCno,sip_stalRecId_RECno,sip_planlananmiktar,sip_teklifRecId_DBCno,sip_teklifRecId_RECno,sip_parti_kodu,sip_lot_no,sip_projekodu,sip_fiyat_liste_no,sip_Otv_Pntr,sip_Otv_Vergi,sip_otvtutari,sip_OtvVergisiz_Fl,sip_paket_kod,sip_RezRecId_DBCno,sip_RezRecId_RECno,sip_harekettipi,sip_yetkili_recid_dbcno,sip_yetkili_recid_recno,sip_kapatmanedenkod,sip_opno) values (0,-1,0,0,21,0,0,0,0,@sip_create_user,@sip_create_date,@sip_lastup_user,@sip_lastup_date,'','','',0,0,@sip_tarih,@sip_teslim_tarih,@sip_tip,@sip_cins,@sip_evrakno_seri,@sip_evrakno_sira,@sip_satirno,@sip_belgeno,@sip_belge_tarih,@sip_satici_kod,@sip_musteri_kod,@sip_stok_kod,@sip_b_fiyat,@sip_miktar,@sip_birim_pntr,0,@sip_tutar,@sip_iskonto_1,@sip_iskonto_2,@sip_iskonto_3,@sip_iskonto_4,@sip_iskonto_5,0,0,0,0,0,@sip_vergi_pntr,@sip_vergi,0,0,'','',@sip_depono,0,0,0,0,@sip_cari_sormerk,@sip_stok_sormerk,0,0,1,1,1,'',1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,'',0,0,0,0,0,0,0,'',0,'',0,0,0,0,0,'',0,0,0,0,0,'',@vade) ");
            sb.Append(";update SIPARISLER set sip_RECid_RECno=sip_RECno where sip_RECid_RECno=-1");

            using (SqlConnection cn = new SqlConnection(Hafiza.Ctor.ConnectionString))
            {
                cn.Open();
                SqlTransaction trn = cn.BeginTransaction();

                using (SqlCommand q = new SqlCommand(sb.ToString(), cn))
                {
                    q.Transaction = trn;

                    q.Parameters.Add("@sip_tip", SqlDbType.TinyInt);
                    q.Parameters.Add("@sip_cins", SqlDbType.TinyInt);
                    q.Parameters.Add("@sip_evrakno_seri", SqlDbType.VarChar, 6);
                    q.Parameters.Add("@sip_evrakno_sira", SqlDbType.Int);
                    q.Parameters.Add("@sip_create_user", SqlDbType.VarChar);
                    q.Parameters.Add("@sip_create_date", SqlDbType.DateTime);
                    q.Parameters.Add("@sip_lastup_user", SqlDbType.VarChar);
                    q.Parameters.Add("@sip_lastup_date", SqlDbType.DateTime);
                    q.Parameters.Add("@sip_tarih", SqlDbType.DateTime);
                    q.Parameters.Add("@sip_teslim_tarih", SqlDbType.DateTime);
                    q.Parameters.Add("@sip_belgeno", SqlDbType.VarChar);
                    q.Parameters.Add("@sip_belge_tarih", SqlDbType.DateTime);
                    q.Parameters.Add("@sip_satici_kod", SqlDbType.VarChar, 25);
                    q.Parameters.Add("@sip_musteri_kod", SqlDbType.VarChar, 25);
                    q.Parameters.Add("@sip_depono", SqlDbType.VarChar);
                    q.Parameters.Add("@sip_cari_sormerk", SqlDbType.VarChar, 25);
                    q.Parameters.Add("@sip_stok_sormerk", SqlDbType.VarChar, 25);
                    q.Parameters.Add("@vade", SqlDbType.Int);
                    q.Parameters.Add("@sip_stok_kod", SqlDbType.VarChar, 25);
                    q.Parameters.Add("@sip_b_fiyat", SqlDbType.Float);
                    q.Parameters.Add("@sip_miktar", SqlDbType.Float);
                    q.Parameters.Add("@sip_birim_pntr", SqlDbType.TinyInt);
                    q.Parameters.Add("@sip_tutar", SqlDbType.Float);
                    q.Parameters.Add("@sip_iskonto_1", SqlDbType.Float);
                    q.Parameters.Add("@sip_iskonto_2", SqlDbType.Float);
                    q.Parameters.Add("@sip_iskonto_3", SqlDbType.Float);
                    q.Parameters.Add("@sip_iskonto_4", SqlDbType.Float);
                    q.Parameters.Add("@sip_iskonto_5", SqlDbType.Float);
                    q.Parameters.Add("@sip_iskonto_6", SqlDbType.Float);
                    q.Parameters.Add("@sip_vergi_pntr", SqlDbType.TinyInt);
                    q.Parameters.Add("@sip_vergi", SqlDbType.Float);
                    q.Parameters.Add("@sip_satirno", SqlDbType.Int);

                    int idx = 0;
                    foreach (Hareket row in rows.Where(x => x.StokAdi != "" && x.StokKodu != "" && x.Miktar > 0))
                    {
                        q.Parameters["@sip_tip"].Value = cins[0];
                        q.Parameters["@sip_cins"].Value = cins[1];
                        q.Parameters["@sip_evrakno_seri"].Value = seri;
                        q.Parameters["@sip_evrakno_sira"].Value = sira;
                        q.Parameters["@sip_create_user"].Value = "0";
                        q.Parameters["@sip_create_date"].Value = DateTime.Now;
                        q.Parameters["@sip_lastup_user"].Value = "0";
                        q.Parameters["@sip_lastup_date"].Value = DateTime.Now;
                        q.Parameters["@sip_tarih"].Value = tarih;
                        q.Parameters["@sip_teslim_tarih"].Value = tarih;
                        q.Parameters["@sip_belgeno"].Value = belgeNo;
                        q.Parameters["@sip_belge_tarih"].Value = tarih;
                        q.Parameters["@sip_satici_kod"].Value = "";
                        q.Parameters["@sip_musteri_kod"].Value = carikodu;
                        q.Parameters["@sip_depono"].Value = girDepo;
                        q.Parameters["@sip_cari_sormerk"].Value = sorMerkez;
                        q.Parameters["@sip_stok_sormerk"].Value = sorMerkez;
                        q.Parameters["@vade"].Value = 0;
                        q.Parameters["@sip_stok_kod"].Value = row.StokKodu;
                        q.Parameters["@sip_b_fiyat"].Value = row.BirimFiyati;
                        q.Parameters["@sip_miktar"].Value = row.Miktar;
                        q.Parameters["@sip_birim_pntr"].Value = 1;
                        q.Parameters["@sip_tutar"].Value = row.Tutari;
                        q.Parameters["@sip_iskonto_1"].Value = row.Iskonto1Tutari;
                        q.Parameters["@sip_iskonto_2"].Value = row.Iskonto2Tutari;
                        q.Parameters["@sip_iskonto_3"].Value = row.Iskonto3Tutari;
                        q.Parameters["@sip_iskonto_4"].Value = row.Iskonto4Tutari;
                        q.Parameters["@sip_iskonto_5"].Value = row.Iskonto5Tutari;
                        q.Parameters["@sip_iskonto_6"].Value = row.Iskonto6Tutari;
                        q.Parameters["@sip_vergi_pntr"].Value = row.KdvSira;
                        q.Parameters["@sip_vergi"].Value = row.KdvTutari;
                        q.Parameters["@sip_satirno"].Value = idx;
                        idx++;

                        q.ExecuteNonQuery();
                    }
                }

                try
                {
                    trn.Commit();
                }
                catch (Exception)
                {
                    if (trn != null)
                        trn.Rollback();
                }
                finally
                {
                    cn.Close();
                }
            }


        }

    }
}
